﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Input;

namespace OpenFrameworkWriter.Controls
{
    public class Adoner : Button
    {
        /// <summary>
        /// Adoner에 Mouse가 눌린경우 발생하는 이벤트
        /// </summary>
        public event EventHandler<MouseButtonEventArgs> Pressed;

        /// <summary>
        /// Adoner에 Mouse가 움직인경우 발생하는 이벤트
        /// </summary>
        public event System.EventHandler<System.Windows.Input.MouseEventArgs> Moved;

        /// <summary>
        /// Adoner에 Mouse가 풀린경우 발생하는 이벤트
        /// </summary>
        public event System.EventHandler<System.Windows.Input.MouseButtonEventArgs> Released;

        /// <summary>
        /// 마우스 왼쪽 버튼이 눌린경우
        /// Pressed 이벤트를 발생시킨다.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonDown(e);

            e.Handled = false;

            if (Pressed != null)
                Pressed(this, e);
        }

        /// <summary>
        /// 마우스 왼쪽 버튼이 풀린 경우
        /// Released 이벤트를 발생시킨다.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonUp(e);

            e.Handled = false;

            if (Released != null)
                Released(this, e);
        }

        /// <summary>
        /// 마우스가 움직인 경우
        /// Pressed가 발생한 경우라면 Draged 이벤트를 발생시킨다.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);

            if (Moved != null)
                Moved(this, e);
        }
    }
}
